package com.threadBase.demo01_establish;

/**
 * 创建线程的方式二：通过实现Runnable接口重写run方法。
 * 1、实现接口创建对象
 *      （1）创建一个类并实现Runnable接口。
 *      （2）重写run()方法，将所要完成的任务代码写进run()方法中。
 *      （3）创建实现Runnable接口的类的对象，将该对象当做Thread类的构造方法中的参数传进去。
 *      （4）使用Thread类的构造方法创建一个对象，并调用start()方法即可运行该线程
 * 2、lambda表达式直接创建
 *      （1）在创建线程时传递一个实现了Runnable接口run方法的示例，
 *      （2）然后直接运行。
 * 3 、总结与比较
 *      Runnable接口的run方法是需要执行的任务逻辑。它是又来在创建线程时告诉新线程
 *      需要做什么工作。
 *      根据Runnable的注释，这种方法将创建线程和编写任务逻辑分开。不需要改变线程本身行为属性
 *      时应该都用这种方式创建线程。
 */
public class Method_Implement {

    public static void main(String[] args) {
        System.out.println("我是主线程！");
        /*=======方法一==========*/
        //获取Runnable实现类对象
        RunnableImpl runnable = new RunnableImpl();
        //建立子线程
        Thread thread1 = new Thread(runnable, "新建线程");
        thread1.start();

        /*=======方法二==========*/
        Thread thread = new Thread(() -> System.out.println("我是子线程！"), "新建线程1");
        thread.start();

    }

    /**
     * Runnable接口实现类
     */
    static class RunnableImpl implements Runnable{ //内部类
        @Override
        public void run() {
            System.out.println("我是线程需要执行的任务！");
        }
    }
}
